package com.shujia.day15.ketang;

import java.io.FileInputStream;
import java.io.IOException;

/*
    throws: 抛出
    在方法的定义上抛出异常类, throws本身是不会处理异常的，只是当时方法内部不用处理了，
    但是当调用者调用有问题的方法时，需要调用者进行处理

    throw: 抛出
    在方法内部抛出异常对象，表示一个确定的异常

    注意：
        当调用者调用抛出运行时期异常的方法时，可以选择不去处理，也能运行。
        当调用者调用抛出编译时期异常的方法是，必须要进行处理，否则编译不通过无法运行。

   小故事理解 throw throws try...catch 的使用：
        江川是一个快乐的小矿工，有一天他挖到了一个远古炸弹💣【throw】，往洞外运输【throws】,运输给了矿厂管理人员
        管理员对炸弹💣进行处理【try..catch】

 */
public class ThrowsDemo1 {
    public static void main(String[] args){
//        try {
//            fun1();
//        }catch (Exception e){
//            e.printStackTrace();
//        }

//        fun1();
//
//        System.out.println("hello world");

//        try {
//            fun2();
//        }catch (Exception e){
//            e.printStackTrace();
//        }

//        fun1();

        try{
            fun3();
        }catch (Exception e){
            e.printStackTrace();
        }


    }

    public static void fun3() throws Exception{
        int i= 0;
        if(i==0){
            throw new ArithmeticException();
        }else {
            System.out.println(5/i);
        }
    }

    public static void fun2() throws IOException {
        FileInputStream fis = new FileInputStream("");
    }


    public static void fun1() throws ArithmeticException{
        int[] arr = {11, 22, 33, 44, 55};


        System.out.println(3 / 0);// new ArrayIndexOutOfBoundsException()


        System.out.println("李刚是世界首富！！");
    }
}
